﻿using CsvHelper.Configuration;
using System.Text.RegularExpressions;

namespace 表格分类.map;

public class DataModelMap : ClassMap<DataModel>
{
    public DataModelMap()
    {
        Map(m => m.订单编号).Convert(arges => arges.Row.GetField("订单编号").Trim()).Optional();
        Map(m => m.下单时间).Optional();
        Map(m => m.订单类型).Optional();
        Map(m => m.产品名).Convert(arges => arges.Row.GetField("产品名").Trim()).Optional();
        Map(m => m.标题).Convert(arges => arges.Row.GetField("标题").Trim()).Optional();
        Map(m => m.产品编号).Convert(arges => arges.Row.GetField("产品编号").Trim()).Optional();
        Map(m => m.套餐).Convert(arges => arges.Row.GetField("套餐").Trim()).Optional();
        Map(m => m.价格).Convert(arges => arges.Row.GetField("价格").Trim()).Optional();
        Map(m => m.数量).Convert(arges => arges.Row.GetField("数量").Trim()).Optional();
        Map(m => m.客户名).Convert(arges => arges.Row.GetField("客户名").Trim()).Optional();
        Map(m => m.联系方式).Convert(arges => arges.Row.GetField("联系方式").Trim()).Optional();
        Map(m => m.收件地址).Convert(arges => CleanField(arges.Row.GetField("收件地址").Trim())).Optional();
        Map(m => m.客户留言).Convert(arges => CleanField(arges.Row.GetField("客户留言").Trim())).Optional();
        Map(m => m.广告ID).Convert(arges => CleanField(arges.Row.GetField("广告ID").Trim())).Optional();
        Map(m => m.广告户ID).Convert(arges => CleanField(arges.Row.GetField("广告户ID").Trim())).Optional();
        Map(m => m.已知真号).Convert(arges => CleanField(arges.Row.GetField("已知真号").Trim())).Optional();
        Map(m => m.签收运单).Optional().Default(0);
        Map(m => m.拒收运单).Optional().Default(0);
        Map(m => m.普通单数).Optional().Default(0);
        Map(m => m.脏单数).Optional().Default(0);
        Map(m => m.额外单数).Optional().Default(0);
    }

    private string CleanField(string field)
    {
        if (string.IsNullOrWhiteSpace(field))
            return field;
        // 直接移除双引号
        field = field.Replace("\"", string.Empty).Trim();
        // 可以根据需要继续移除其他特殊字符或标记
        field = Regex.Replace(field, @"[&PQSPD&]+", string.Empty).Trim();
        return field;
    }
}